home *** CD-ROM | disk | FTP | other *** search
/ The Best of MacTutor - S…e Code for Volumes 1 to 5 / The Best of MacTutor - Source Code for Volume 1-5 (Wayzata Technology)(6031)(1990).bin / Source Code / #10 (Jul 86) / modula source / PBFileManagerASM.ASM < prev    next >
Assembly Source File  |  1986-04-10  |  927b  |  37 lines

  1. ; Tom Taylor
  2. ; 3707 Poinciana Dr. #137
  3. ; Santa Clara, CA 95051
  4. ;
  5. ; The one procedure in this
  6. ; file is used to implement
  7. ; all of the PB calls.  The
  8. ; higher level Modula-2 program
  9. ; (PBFileManager.MOD)
  10. ; passes in the actual value
  11. ; of the PB trap and the
  12. ; procedure here modifies itself
  13. ; to execute that trap.
  14.  
  15. DC.W    LowLevelPB
  16.  
  17. asyncTrpBit    EQU    $400
  18.  
  19. ;    PROCEDURE LowLevelPB (pBlk: ParmBlkPtr;
  20. ;                          async: BOOLEAN;
  21. ;                   trap: CARDINAL;
  22. ;                   selector: INTEGER) : OsErr;
  23. LowLevelPB:
  24.     MOVE.W    (A4)+,D0    ; get trap selector (HFS only)
  25.     MOVE.W    (A4)+,D1    ; get trap value
  26.     TST.W    (A4)+        ; check for async call
  27.     BEQ.S    NotAsync         ; nope
  28.     ORI.W    #asyncTrpBit,D1    ; yep, make trap async
  29. NotAsync:
  30.     LEA    Trapper,A0    ; get address of trap location
  31.     MOVE.W    D1,(A0)        ; install trap
  32.     MOVE.L    (A4)+,A0    ; get param block address
  33. Trapper:
  34.     DC.W    0        ; PB Trap goes here
  35.     MOVE.W    D0,-(A4)    ; return result
  36.     RTS
  37.